package br.com.peri.service.bean;

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

import br.com.peri.StatusDigitalUsuarioPlano;
import br.com.peri.Usuario;
import br.com.peri.exception.PeriException;
import br.com.peri.exception.PeriWsException;
import br.com.peri.repository.UsuarioRepository;
import br.com.peri.service.UsuarioService;
import br.com.peri.validator.PeriValidator;

@Stateless
public class UsuarioServiceBean implements UsuarioService {

	private static final long serialVersionUID = 1L;

	@Inject
	private UsuarioRepository usuarioRepository;

	@Override
	public Usuario salvarUsuario(Usuario usuario) throws PeriWsException {
		// validacoes
		try {
			PeriValidator.getInstance().validEntity(usuario);
		} catch (PeriException e) {
			throw new PeriWsException(e.getMessages(), e);
		}
		return usuarioRepository.salvar(usuario);
	}

	@Override
	public Usuario atualizarUsuario(Usuario usuario) throws PeriWsException {
		// validacoes
		try {
			PeriValidator.getInstance().validEntity(usuario);
		} catch (PeriException e) {
			throw new PeriWsException(e.getMessages(), e);
		}
		return usuarioRepository.atualizar(usuario);
	}

	@Override
	public void excluirUsuario(Long idUsuario) throws PeriWsException {
		usuarioRepository.excluir(Usuario.class, idUsuario);
	}

	@Override
	public List<Usuario> listarTodosUsuarios() {
		return usuarioRepository.listarTodos(Usuario.class);
	}

	@Override
	public StatusDigitalUsuarioPlano getStatusDigitalUsuarioPlano(String cpfCnpj) {
		return usuarioRepository.getStatusDigital(cpfCnpj);
	}

	@Override
	public Usuario getUsuarioPorId(Long id) {
		return usuarioRepository.pesquisarPorId(Usuario.class, id);
	}

}
